function getY(x) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve(x + 100);
        }, 100);
    })
}

//两个值一个来自异步，一个来自同步，可以考虑将两个值使用两个promise将其分离开。所以在这里返回了一个promise的数组
//好处：如果后期需要将x和y的逻辑进行分离，这样会更加的简单
function foo(x, y) {
    let sum = x + y;
    return [Promise.resolve(sum), getY(x)];
}

// Promise.all(foo(10, 20))
//     .then(function (values) {
//         console.log("values[0]=" + values[0] + ";value[1]=" + values[1])
//     })

//在es6中提供了数组参数结构，这样可以用起来更方便
Promise.all(foo(10, 20))
.then(function (values) {
    let [x,y]=values;
    console.log("values[0]=" + x + ";value[1]=" + y)
})